The present invention relates to a distortion correction method in optical code reading.
The term xe2x80x9coptical codexe2x80x9d is used below to denote any graphical representation whose function is to store coded information. Specific examples of optical codes are linear or two-dimensional codes wherein the information is coded by suitable combinations of elements of predetermined shape, such as squares, rectangles or hexagons, of dark colour (usually black) separated by light elements (spaces, usually white), such as bar codes, stacked codes (including PDF417), Maxicode, Datamatrix, QR-Code, colour codes etc. The term xe2x80x9coptical codexe2x80x9d further comprises, more generally, other graphical forms with the aim of coding information, including uncoded characters (letters, figures etc.) and specific patterns (such as stamps, logos, signatures etc). The information may also be coded by more than two colours, in grey tones for example.
As known, for coding information, for optical identification of objects for example, bar codes are currently very widespread and are used in an increasingly wide variety of applications thanks to their compactness, robustness to ambient conditions (which enables them to be automatically decoded even in the presence of high noise) and possibility of automatic reading and interpretation. They do, however, allow storage of relatively few items of information; to overcome this limitation, two-dimensional codes such as the Datamatrix, Maxicode, QR-Code and stacked (e.g. PDF417) codes have recently been proposed, examples whereof are shown in FIGS. 1a, 1b, 1c and 1d respectively.
Reading two-dimensional codes may be achieved by getting two-dimensional images in a zone where presence of a code is expected and location of the code within the image, for subsequent decoding. In general, code location comprises a series of steps for initially distinguishing, within the image stored in a computer memory, the region or regions where one or more codes is present from zones where other objects or figures are present; then localizing specific recognition patterns typical to each code, acquiring information of the code type and finally precisely delimiting the code. The delimited image of the code is then processed to extract characteristics necessary to decoding and, finally, the code is decoded.
However, because of geometrical distortions caused by lack of parallelism between the plane containing the code (the image whereof is acquired) and the shooting, plane, the quadrilateral inscribing the code in the stored image does not, in general, have a regular geometrical shape. In particular, there may be perspective deformations due to rotations about three spatial axes (presence of pitch, skew and tilt angles). These deformations, which sometimes may not be neglected, transform the code (of rectangular or square shape) into irregular quadrilaterals.
A typical deformation example is illustrated in FIG. 2, showing a Datamatrix code type inclined by 50xc2x0 with respect to the reader plane.
Currently, to eliminate or compensate perspective deformations the acquired image is rescaled by applying roto-translation algorithms to all pixels of the acquired image (or of the image portion where the code has been located and delimited) to obtain a new image wherein the code assumes the initial regular shape.
To do this, it is necessary to know specific information of the code being read: in the case of the Maxicode for example, the bull-eye (target formed by a series of concentric circles in the code center) may be analyzed and, if it is elliptical, correction roto-translation parameters are deduced and roto-translation carried out with the deduced parameters.
The known systems do, however, require many computational complex operations (matrices are used, and all points of the image are transformed); consequently, high calculation capacities are needed, not available to all readers, as well as a considerable calculation time, so that reading is slow.
Object of the invention is to provide a distortion correction method requiring a lower operation number and less computing time than known methods.
The present invention provides a distortion correction method of a deformed image deriving from reading an optical code, said optical code comprising a plurality of elements and said deformed image comprising a plurality of points, a respective brightness value being associated with each point, characterized by the steps of:
generating a grid of said deformed image to identify a plurality of characteristic points in said deformed image; and
generating a transformed image formed by decoding points using a geometrical transformation correlating said characteristic points and said decoding points.
Preferably, the selected characteristic points are the central pixel of each element of the optical code. In this way, only the most significant point of each element, not affected by the border effect caused by adjacent code elements of different colour, is used for decoding; furthermore, the operations required to eliminate the distortion are drastically reduced in number.
Advantageously, the structure of the code being read is initially determined, to identify the number of rows and columns in the code. The grid generation step is then carried out; this comprises the steps of constructing a rectangular grid formed by lines unambiguously defining the coordinates of notable points associated with the central point of each code element; determining the geometrical transformation linking reference points of known position on the deformed image and corresponding points on the deformed image; and calculating the coordinates of characteristic points associated with the notable points because of the geometrical transformation.